関連ページリストをページの横に表示するUserCSS ver.2
以下を参照
style.scssと_values.scss以外に関しては元ページに掲載されているものと全く同じものを使用しているため記述しない
TODO
.related-page-list .tool-barにheight:auto;を設定すること
SCSS(変更したもののみ)
code:style.scss
/* @use */
@use "./_Mijinko-other_values.scss";
@use "./_common.scss";
@use "./_navbar.scss";
@use "./_related-page-list.scss";
// ページ情報を常時表示する際はコメントアウトを解除する
// @use "./_page-info.scss";
/* Noto Sans JPをダウンロードする */
/* Font Awesome 6をダウンロードする */
code:_Mijinko-other_values.scss
/* ページタイトル周りのレイアウトを調整する */
body, *::after, *::before {
/* # 共通設定 */
/* 全体の最大幅 */
--body-max-width: 1200px; /*【値変更非対応】*/
/* ページの横padding */
--body-padding-horizon: 8px; /*【値変更非対応】*/
/* ページ内のフォントサイズ */
--page-font-size: 15px;
/* デフォルトで設定されているフォント
* Font Awesomeを常時使えるようにするUserCSSから流用したもの */
--base-fonts: "Roboto",Helvetica,Arial,"Hiragino Sans","Font Awesome 6 Free","Font Awesome 5 Brands","AppIcons",sans-serif;
/* ページタイトルとかに使っているフォント */
--label-fonts: "Noto Sans JP", var(--base-fonts);
--animation-time: .3s;
/* # ナビゲーションバー */
/* ナビゲーションバーの横margin */
--navbar-margin-horizon: 8px;
/* more page of の文字色 */
--tool-color: hsl(0deg 0% 100% / 71%);
/* # ページメニュー */
--page-menu-icon-size: 46px;
/* # ページ内部 */
/* ページの横padding
* テロメアの位置調整も必要なので変数で管理する */
--page-padding-horizon: 30px; /* 元々は42px */
/* ページの上padding */
--page-padding-top: 21px; /* 元々は42px */
/* ページタイトルの左padding */
--line-title-margin-left: 0px;//-12px;
/* ページタイトル下線の幅 */
--line-title-border-width: 2px;
/* # 関連ページリスト・ページカード */
/* 関連ページリストのラベルのホバー時の文字 */
--relation-label-text: hsl(180deg 0% 87%); /* 既定値 */
--relation-label-text-1: hsl(257deg 0% 70%);
--relation-label-text-p1: hsl(180deg 0% 47%);
--relation-label-text-2: hsl(218deg 0% 61%);
--relation-label-text-empty: hsl(9deg 0% 73%);
/* 関連ページリストのページカードの背景 */
--relation-page-bg: hsl(0deg 0% 100% / 7%); /* 既定値 */
--relation-page-bg-1: hsl(257deg 0% 40%);
--relation-page-bg-p1: hsl(180deg 0% 27%);
--relation-page-bg-2: hsl(218deg 0% 38%);
--relation-page-bg-empty: hsl(9deg 0% 51%);
--card-bg: var(--relation-page-bg);
/* 関連ページリストのページカードの線 */
--relation-page-border-color: hsl(0deg 0% 100% / 50%);
}
/* # 関連ページリストを右側に持ってくるやつの専用設定 */
@media (min-width: 768px) and (min-height: 768px) {
body, *::after, *::before {
/* ページ情報の大きさ */
--page-info-height: 0px;
--page-info-width: 250px;
/* ページメニューの背景 */
--page-menu-bg: var(--page-bg);
/* ページ情報とページメニューの間の色 */
--page-info-area-bg: hsl(265deg 7% 37% / 10%);
/* ページの最大幅 */
--page-max-width: calc(
var(--body-max-width)
- (var(--body-padding-horizon) * 2)
- var(--page-info-width)
- 20px /* どこから出た20pxなのかは謎 */
);
/*
* ページメニュー全体の高さ
* 自分のアイコンの数によって高さを変える */
--page-menu-height: calc(var(--page-info-height)
+ (var(--page-menu-icon-size) * var(--page-menu-rows)));
/* ページメニューの角丸の深さ */
--page-menu-border-radius: 3px;
/* ページメニューのアイコンの数 */
--page-menu-columns: 4; /* 横並びの個数 */
--page-menu-rows: 1; /* 縦並びの個数 */
/* 関連ページリストのラベルのフォントサイズ */
--relation-label-font-size: 16px;
/* 関連ページリストのラベルの鎖アイコンの大きさ */
--relation-label-icon-size: 18px;
/* 関連ページリストの横側の空白 */
--relation-label-margin-left: 3px;
}
}
スクリプト
編集者のみ必要なやつ
code:calc_pagemenu_rows.js
const styleDOMId = "Mijinko-settings-additional-style"
const projectName = "Mijinko-other"
function updateStyle() {
removeStyle()
if(scrapbox.Project.name !== projectName) return
const iconsLen = document.querySelectorAll(".page-menu > :is(.dropdown, a)").length
const rows = Math.ceil(iconsLen / 4)
const styleDOM = document.createElement("style")
styleDOM.textContent = html body{ --page-menu-rows: ${rows} }
styleDOM.id = styleDOMId
document.body.append(styleDOM)
}
function removeStyle() {
const style = document.getElementById(styleDOMId)
if(style === null) return
style.remove()
}
setTimeout(updateStyle, 1000)
scrapbox.on("page:changed", updateStyle)
変換済みのCSS
上が検索文で、下が置換後
1.
$ \n
2.
$ /\*.*?\*/
3.
$ \s+
$
4.
$ $1
calc()が動作しなくなる可能性があるので()は対象から外している code:style.css
@charset "UTF-8";@import "https://fonts.googleapis.com/css?family=Noto+Sans+JP";@import "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css";body,*::after,*::before {--body-max-width:1200px;--body-padding-horizon:8px;--page-font-size:15px;--base-fonts:"Roboto",Helvetica,Arial,"Hiragino Sans","Font Awesome 6 Free","Font Awesome 5 Brands","AppIcons",sans-serif;--label-fonts:"Noto Sans JP",var(--base-fonts);--animation-time:.3s;--navbar-separator-width:0px;--navbar-margin-horizon:8px;--navbar-min-height:calc(var(--navbar-row-1-height) + var(--navbar-row-2-height));--navbar-max-height:var(--navbar-min-height);--navbar-row-1-height:calc(40px + var(--navbar-separator-width));--navbar-row-2-height:0px;--tool-color:hsl(0deg 0% 100% / 71%);--page-menu-icon-size:46px;--page-padding-horizon:30px;--page-padding-top:21px;--line-title-margin-left:0px;--line-title-border-width:2px;--relation-label-text:hsl(180deg 0% 87%);--relation-label-text-1:hsl(257deg 0% 70%);--relation-label-text-p1:hsl(180deg 0% 47%);--relation-label-text-2:hsl(218deg 0% 61%);--relation-label-text-empty:hsl(9deg 0% 73%);--relation-page-bg:hsl(0deg 0% 100% / 7%);--relation-page-bg-1:hsl(257deg 0% 40%);--relation-page-bg-p1:hsl(180deg 0% 27%);--relation-page-bg-2:hsl(218deg 0% 38%);--relation-page-bg-empty:hsl(9deg 0% 51%);--card-bg:var(--relation-page-bg);--relation-page-border-color:hsl(0deg 0% 100% / 50%);}@media (min-width:768px) and (min-height:500px) {body,*::after,*::before {--page-info-width:250px;--page-menu-bg:var(--page-bg);--page-info-area-bg:hsl(265deg 7% 37% / 10%);--page-max-width:calc( var(--body-max-width) - (var(--body-padding-horizon) * 2) - var(--page-info-width) - 20px );--page-menu-height:calc(var(--page-info-height) + (var(--page-menu-icon-size) * var(--page-menu-rows)));--page-menu-border-radius:3px;--page-menu-columns:4;--page-menu-rows:1;--relation-label-font-size:16px;--relation-label-icon-size:18px;--relation-label-margin-left:3px;}}div.editor {font-size:var(--page-font-size);}div.editor,.grid li,.stream {font-family:var(--base-fonts);}.row-flex > .col-page-side {width:0;}.page-menu .dropdown,.page-menu .dropdown .tool-btn {width:var(--page-menu-icon-size);height:var(--page-menu-icon-size);}div.page-menu ul > li > div {line-height:20px;}.page:is(div,main) {box-shadow:none;background-color:transparent;padding:var(--page-padding-top) var(--page-padding-horizon) 17px;}div.line.line-title {margin-left:var(--line-title-margin-left);}div.line.line-title .text {padding-bottom:0;}div.line.line-title .telomere .telomere-border {left:calc(-7px - var(--page-padding-horizon) - var(--line-title-margin-left));}.line .telomere div.telomere-border {left:calc(-7px - var(--page-padding-horizon));box-sizing:content-box;}.line .text .indent-mark {top:auto;}@media (max-width:768px),(max-height:500px) {div.col-page {padding:0 15px 0 8px;}}.navbar > .container {padding:0;width:calc(100% - var(--navbar-margin-horizon) * 2);}.navbar > .container .navbar-brand {box-sizing:content-box;}.navbar .row {margin:0 auto;max-width:1200px;}@media (min-width:768px),(min-height:500px) {.app > .container:not(style) {width:calc(100% - var(--navbar-margin-horizon));max-width:var(--body-max-width);padding:0;}div.quick-launch.layout-page {margin:0;}}@media (min-width:768px) and (min-height:500px) {.app {}.app > .row-flex {padding-top:var(--page-padding-top);}.app .page:is(div,main) {max-width:var(--page-max-width);margin-bottom:calc(100vh - var(--navbar-max-height) - 4em - 32px);}.app div.page-menu {display:grid;grid-auto-flow:row;top:calc(var(--navbar-min-height) + 5px);width:var(--page-info-width);max-height:var(--page-menu-height);grid-template-columns:repeat(var(--page-menu-columns),1fr);border-radius:var(--page-menu-border-radius);background-color:var(--page-menu-bg);box-shadow:0px 0px 9px 0px black;}.app .page-menu > .dropdown {align-self:center;justify-self:center;}.app .page-menu > .random-jump-button {margin:auto;}.app div.row-flex {margin:0 auto;padding:0 8px;max-width:1200px;justify-content:flex-start;}.app div.col-page {width:calc(100% - 20px - var(--page-info-width));}.app .page-wrapper {display:flex;flex-direction:row;}.app div.drag-and-drop-enter {flex-basis:100%;}.app .related-page-list:is(div,section) {position:relative;margin-top:calc(var(--page-menu-height) + 0.5em);margin-right:-100%;margin-left:10px;width:var(--page-info-width);}.app .related-page-list:is(div,section) .links-container {gap:0;}.app .related-page-list:is(div,section) ul.grid {margin:calc(var(--relation-label-font-size) * 0.5) 0;}.app .related-page-list div.toolbar {margin-top:3px;flex-direction:column;height:auto;}.app .related-page-list div.toolbar .related-page-sort-menu {display:flex;justify-content:center;}.app .related-page-list div.toolbar .related-page-sort-menu .tool-btn {padding:3px 10px 3px;}.app .related-page-list div.toolbar .related-page-list-search {line-height:2em;border-radius:var(--page-menu-border-radius);background-color:var(--search-form-bg);}.app .related-page-list div.toolbar .related-page-list-search i.fa {margin-left:3px;margin-right:2px;width:var(--relation-label-icon-size);height:var(--relation-label-icon-size);line-height:var(--relation-label-icon-size);text-align:center;}.app .related-page-list div.toolbar .related-page-list-search input {width:calc(var(--page-info-width) - var(--relation-label-icon-size) - 3px - 2px);}.app .related-page-list .grid {gap:0;}.app .related-page-list .grid li.relation-label {margin:0 0 10px;width:100%;height:auto;aspect-ratio:unset;}.app .related-page-list .grid li.relation-label .arrow {display:none;}.app .related-page-list .grid li.relation-label a {padding:0 calc(var(--relation-label-margin-left) * 2 + var(--relation-label-icon-size));border-bottom:solid 1px var(--relation-label-text);display:flex;width:100%;border-radius:0;flex-direction:row-reverse;justify-content:center;color:var(--relation-label-text);background-color:transparent;}.app .related-page-list .grid li.relation-label a .title {font-family:var(--label-fonts);font-size:var(--relation-label-font-size);line-height:1.5em;}.app .related-page-list .grid li.relation-label a .icon-lg {position:absolute;left:3px;margin:0;font-size:var(--relation-label-icon-size);width:1em;height:1.5em;line-height:1.5em;vertical-align:middle;}.app .related-page-list .grid > :not(.relation-label) {margin:0;margin-bottom:0.5em;padding:0 0.5em;width:var(--page-info-width);height:6em;}.app .related-page-list .grid .page-list-item {height:6em;}.app .related-page-list .grid .page-list-item a {width:auto;background-color:var(--relation-page-bg);border-radius:0 0 3px 3px;box-shadow:none;}.app .related-page-list .grid .page-list-item .header {padding-bottom:3px;border-top:none;border-bottom:1.5px solid var(--relation-page-border-color);z-index:1;}.app .related-page-list .grid .page-list-item .description {padding-top:3px;}.app .related-page-list .grid .page-list-item .icon {position:absolute;padding:1px;margin-left:25%;width:75%;height:100%;display:flex;flex-direction:row;justify-content:flex-end;align-items:center;opacity:0.5;}.app .related-page-list .grid .page-list-item .icon::before {position:absolute;top:0;left:0;display:block;width:100%;height:100%;background:linear-gradient(273deg,transparent 0 15%,var(--body-bg) 75% 100%);}.app .related-page-list .grid .page-list-item .icon > img {margin:0;width:100%;height:-moz-fit-content;height:fit-content;vertical-align:middle;}.app .related-page-list .grid .ellipsis {margin:0;margin-bottom:0.5em;padding:0 0.5em;width:var(--page-info-width);height:3em;}.app .related-page-list .grid .ellipsis a {padding:0;}.app .related-page-list .grid .expand-stack {height:4em;background-color:transparent;}.app .related-page-list .grid .expand-stack a {background-color:var(--relation-page-bg);border-radius:0 0 3px 3px;}.app .related-page-list .grid .splitter.splitter {display:none;}.app .related-page-list > div .grid:hover .page-list-item a,.app .related-page-list > div .grid:hover .page-list-item a:hover {box-shadow:var(--card-box-hover-shadow);}.app .related-page-list > .links-1-hop .grid:hover .relation-label a > span {color:var(--relation-label-text-1);transition:background-color var(--animation-time);}.app .related-page-list > .links-1-hop .grid:hover :is(.page-list-item,.expand-stack) a {background-color:var(--relation-page-bg-1);transition:background-color var(--animation-time);}.app .related-page-list > .project-links-1-hop .grid:hover .relation-label a > span {color:var(--relation-label-text-p1);transition:background-color var(--animation-time);}.app .related-page-list > .project-links-1-hop .grid:hover :is(.page-list-item,.expand-stack) a {background-color:var(--relation-page-bg-p1);transition:background-color var(--animation-time);}.app .related-page-list > .links-2-hop .grid:hover .relation-label.relation-label a {color:var(--relation-label-text);background-color:transparent;transition:background-color var(--animation-time);}.app .related-page-list > .links-2-hop .grid:hover .relation-label a > span {color:var(--relation-label-text-2);transition:background-color var(--animation-time);}.app .related-page-list > .links-2-hop .grid:hover :is(.page-list-item,.expand-stack) a {background-color:var(--relation-page-bg-2);transition:background-color var(--animation-time);}.app .related-page-list > .empy-links .grid:hover .relation-label a > span,.app .related-page-list > .empty-links .grid:hover .relation-label a > span {color:var(--relation-label-text-empty);transition:background-color var(--animation-time);}.app .related-page-list > .empy-links .grid:hover :is(.page-list-item,.expand-stack) a,.app .related-page-list > .empty-links .grid:hover :is(.page-list-item,.expand-stack) a {background-color:var(--relation-page-bg-empty);transition:background-color var(--animation-time);}.app .related-page-list .grid:not(:hover) li.page-list-item a:hover {box-shadow:none;}}@media (min-width:768px) and (min-height:500px) {.app > .container {margin:0 auto;}.app > .container > .page-column {margin:0;display:flex;width:100%;max-width:var(--body-max-width);}.app > .container > .page-column .page-list {margin-top:var(--page-padding-top);}}@media (min-width:768px) and (min-height:500px) {body,*::after,*::before {--page-info-height:0px;}div.page-menu {grid-template-columns:repeat(var(--page-menu-columns),1fr);}.dropdown ul.dropdown-menu-right {top:50px;right:0;}}